Multiply Strings || Excel Sheet Column Title

Multiply Strings

Question

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note:

  • The numbers can be arbitrarily large and are non-negative.
  • Converting the input string to integer is NOT allowed.
  • You should NOT use internal library such as BigInteger.

Analysis

https://discuss.leetcode.com/topic/30508/easiest-java-solution-with-graph-explanation

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public String multiply(String num1, String num2) {
int m = num1.length(), n = num2.length();
int[] pos = new int[m + n];
for(int i = m - 1; i >= 0; i--) {
for(int j = n - 1; j >= 0; j--) {
int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
int p1 = i + j, p2 = i + j + 1;
int sum = mul + pos[p2];
pos[p1] += sum / 10;
pos[p2] = (sum) % 10;
}
}
StringBuilder sb = new StringBuilder();
for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p);
return sb.length() == 0 ? "0" : sb.toString();
}

Excel Sheet Column Title

Question

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

1
2
3
4
5
6
7
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB

Analysis

26进制转10进制

Code

Mine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Solution {
public String convertToTitle(int n) {
StringBuilder res=new StringBuilder();
int remain=0;
while(n>26){
remain=n%26;
if(remain==0){
res.insert(0,'Z');
n--;
}else{
res.insert(0,(char)(remain+64));
}
n/=26;
}
res.insert(0,(char)(n+64));
return res.toString();
}
}

Better

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Solution {
public String convertToTitle(int n) {
StringBuilder result = new StringBuilder();
while(n>0){
n--;
result.insert(0, (char)('A' + n % 26));
n /= 26;
}
return result.toString();
}
}

###